﻿Public Class Dadicionales

    Public Shared Function SeleccionarTodo(ByVal descEmpresa As String) As List(Of Eadicionales)
        Dim adicionals As List(Of Eadicionales) = Nothing

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_adicionales_sel", cn)
                cmd.CommandType = CommandType.StoredProcedure
                Try
                    cn.Open()
                    Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleResult Or CommandBehavior.CloseConnection)
                        If dr.HasRows Then
                            adicionals = New List(Of Eadicionales)
                            Dim adicional As Eadicionales = Nothing
                            Do While dr.Read
                                adicional = New Eadicionales( _
                                    dr.GetInt32(dr.GetOrdinal("idAdicional")), _
                                    dr.GetString(dr.GetOrdinal("codAdicional")), _
                                    dr.GetString(dr.GetOrdinal("tituloAdicional")), _
                                    dr.GetString(dr.GetOrdinal("tipoAdicional")), _
                                    dr.GetString(dr.GetOrdinal("descAdicional")), _
                                    dr.GetString(dr.GetOrdinal("descTpoAdicional")), _
                                    dr.GetDecimal(dr.GetOrdinal("monto")), _
                                    dr.GetString(dr.GetOrdinal("estado")), _
                                    dr.GetString(dr.GetOrdinal("descEstado")), _
                                    dr.GetInt32(dr.GetOrdinal("idProyecto")), _
                                    dr.GetString(dr.GetOrdinal("descProyecto")), _
                                    dr.GetInt32(dr.GetOrdinal("idUsuario")), _
                                    dr.GetString(dr.GetOrdinal("tipoCasa")))
                                adicionals.Add(adicional)
                            Loop
                            dr.Close()
                        End If
                    End Using
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return adicionals
    End Function
    Public Shared Function SeleccionarCasa(ByVal descEmpresa As String, ByVal idProyecto As Int32) As List(Of Eadicionales)
        Dim adicionals As List(Of Eadicionales) = Nothing

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_adicionalesCasa_sel", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@idProyecto", SqlDbType.Int).Value = idProyecto
                Try
                    cn.Open()
                    Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleResult Or CommandBehavior.CloseConnection)
                        If dr.HasRows Then
                            adicionals = New List(Of Eadicionales)
                            Dim adicional As Eadicionales = Nothing
                            Do While dr.Read
                                adicional = New Eadicionales( _
                                    dr.GetInt32(dr.GetOrdinal("idAdicional")), _
                                    dr.GetString(dr.GetOrdinal("codAdicional")), _
                                    dr.GetString(dr.GetOrdinal("tituloAdicional")), _
                                    dr.GetString(dr.GetOrdinal("tipoAdicional")), _
                                    dr.GetString(dr.GetOrdinal("descAdicional")), _
                                    dr.GetString(dr.GetOrdinal("descTpoAdicional")), _
                                    dr.GetDecimal(dr.GetOrdinal("monto")), _
                                    dr.GetString(dr.GetOrdinal("estado")), _
                                    dr.GetString(dr.GetOrdinal("descEstado")), _
                                    dr.GetInt32(dr.GetOrdinal("idProyecto")), _
                                    dr.GetString(dr.GetOrdinal("descProyecto")), _
                                    dr.GetInt32(dr.GetOrdinal("idUsuario")), _
                                    dr.GetString(dr.GetOrdinal("tipoCasa")))
                                adicionals.Add(adicional)
                            Loop
                            dr.Close()
                        End If
                    End Using
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return adicionals
    End Function
    Public Shared Function SeleccionarAdicionales(ByVal descEmpresa As String, ByVal idProyecto As Int32) As List(Of Eadicionales)
        Dim adicionals As List(Of Eadicionales) = Nothing

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_adicionalesMejoras_sel", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@idProyecto", SqlDbType.Int).Value = idProyecto
                Try
                    cn.Open()
                    Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleResult Or CommandBehavior.CloseConnection)
                        If dr.HasRows Then
                            adicionals = New List(Of Eadicionales)
                            Dim adicional As Eadicionales = Nothing
                            Do While dr.Read
                                adicional = New Eadicionales( _
                                    dr.GetInt32(dr.GetOrdinal("idAdicional")), _
                                    dr.GetString(dr.GetOrdinal("codAdicional")), _
                                    dr.GetString(dr.GetOrdinal("tituloAdicional")), _
                                    dr.GetString(dr.GetOrdinal("tipoAdicional")), _
                                    dr.GetString(dr.GetOrdinal("descAdicional")), _
                                    dr.GetString(dr.GetOrdinal("descTpoAdicional")), _
                                    dr.GetDecimal(dr.GetOrdinal("monto")), _
                                    dr.GetString(dr.GetOrdinal("estado")), _
                                    dr.GetString(dr.GetOrdinal("descEstado")), _
                                    dr.GetInt32(dr.GetOrdinal("idProyecto")), _
                                    dr.GetString(dr.GetOrdinal("descProyecto")), _
                                    dr.GetInt32(dr.GetOrdinal("idUsuario")), _
                                    dr.GetString(dr.GetOrdinal("tipoCasa")))
                                adicionals.Add(adicional)
                            Loop
                            dr.Close()
                        End If
                    End Using
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return adicionals
    End Function
    Public Shared Function SeleccionarTipo(ByVal descEmpresa As String, ByVal idAdicional As Int32) As String
        Dim adicionales As Eadicionales = Nothing
        Dim adicionals As String = Nothing
        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_adicionalesTipo_sel", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@idAdicional", SqlDbType.Int).Value = idAdicional
                Try
                    cn.Open()
                    Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleResult Or CommandBehavior.CloseConnection)
                        If dr.HasRows Then
                            dr.Read()
                            adicionales = New Eadicionales(dr.GetString(dr.GetOrdinal("tipoCasa")))
                            adicionals = adicionales.tipoCasa
                        End If
                    End Using
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return adicionals
    End Function
    Public Shared Function SeleccionarTodoXTipo(ByVal descEmpresa As String, ByVal tipoCasa As String, ByVal idAdicional As Int32) As List(Of Eadicionales)
        Dim adicionals As List(Of Eadicionales) = Nothing

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_adicional_selXTipo", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@tipoCasa", SqlDbType.VarChar, 1).Value = tipoCasa
                cmd.Parameters.Add("@idAdicional", SqlDbType.Int).Value = idAdicional
                Try
                    cn.Open()
                    Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleResult Or CommandBehavior.CloseConnection)
                        If dr.HasRows Then
                            adicionals = New List(Of Eadicionales)
                            Dim adicional As Eadicionales = Nothing
                            Do While dr.Read
                                adicional = New Eadicionales( _
                                    dr.GetInt32(dr.GetOrdinal("idAdicional")), _
                                    dr.GetString(dr.GetOrdinal("codAdicional")), _
                                    dr.GetString(dr.GetOrdinal("tituloAdicional")), _
                                    dr.GetString(dr.GetOrdinal("tipoAdicional")), _
                                    dr.GetString(dr.GetOrdinal("descAdicional")), _
                                    dr.GetString(dr.GetOrdinal("descTpoAdicional")), _
                                    dr.GetDecimal(dr.GetOrdinal("monto")), _
                                    dr.GetString(dr.GetOrdinal("estado")), _
                                    dr.GetString(dr.GetOrdinal("descEstado")), _
                                    dr.GetInt32(dr.GetOrdinal("idProyecto")), _
                                    dr.GetString(dr.GetOrdinal("descProyecto")), _
                                    dr.GetInt32(dr.GetOrdinal("idUsuario")), _
                                    dr.GetString(dr.GetOrdinal("tipoCasa")))
                                adicionals.Add(adicional)
                            Loop
                            dr.Close()
                        End If
                    End Using
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return adicionals
    End Function
    Public Shared Function SeleccionarTodoXIds(ByVal descEmpresa As String, ByVal ids As Int32) As Eadicionales
        Dim adicionals As Eadicionales = Nothing

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_adicional_selXId", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@ids", SqlDbType.Int).Value = ids
                Try
                    cn.Open()
                    Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleResult Or CommandBehavior.CloseConnection)
                        If dr.HasRows Then
                            'adicionals = New List(Of Eadicionales)
                            'Dim adicionals As Eadicionales = Nothing
                            dr.Read()
                            adicionals = New Eadicionales( _
                                dr.GetInt32(dr.GetOrdinal("idAdicional")), _
                                dr.GetString(dr.GetOrdinal("codAdicional")), _
                                dr.GetString(dr.GetOrdinal("tituloAdicional")), _
                                dr.GetString(dr.GetOrdinal("tipoAdicional")), _
                                dr.GetString(dr.GetOrdinal("descAdicional")), _
                                dr.GetString(dr.GetOrdinal("descTpoAdicional")), _
                                dr.GetDecimal(dr.GetOrdinal("monto")), _
                                dr.GetString(dr.GetOrdinal("estado")), _
                                dr.GetString(dr.GetOrdinal("descEstado")), _
                                dr.GetInt32(dr.GetOrdinal("idProyecto")), _
                                dr.GetString(dr.GetOrdinal("descProyecto")), _
                                dr.GetInt32(dr.GetOrdinal("idUsuario")), _
                                dr.GetString(dr.GetOrdinal("tipoCasa")))
                            ' adicionals.Add(adicional)
                            'Loop
                            dr.Close()
                        End If
                    End Using
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return adicionals
    End Function
    Public Shared Function SeleccionarTodoXId(ByVal descEmpresa As String, ByVal pIdDscto As Int32) As Eadicionales
        Dim adicional As Eadicionales = Nothing

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_adicional_selXId", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@idDscto", SqlDbType.Int).Value = pIdDscto
                Try
                    cn.Open()
                    Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleRow Or CommandBehavior.CloseConnection)
                        If dr.HasRows Then
                            dr.Read()
                            adicional = New Eadicionales( _
                                dr.GetInt32(dr.GetOrdinal("idDscto")), _
                                dr.GetString(dr.GetOrdinal("descDscto")), _
                                dr.GetDecimal(dr.GetOrdinal("dsctoMin")), _
                                dr.GetDecimal(dr.GetOrdinal("dsctoMax")), _
                                dr.GetString(dr.GetOrdinal("estado")), _
                                dr.GetInt32(dr.GetOrdinal("idUsuario")), _
                                dr.GetInt32(dr.GetOrdinal("idProyecto")), _
                                dr.GetInt32(dr.GetOrdinal("idTpoadicional")))
                            dr.Close()
                        End If
                    End Using
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return adicional
    End Function
    Public Shared Function SeleccionarTodoXIdProyecto(ByVal descEmpresa As String, ByVal pIdDscto As Int32, ByVal idProyecto As Int32) As Eadicionales
        Dim adicional As Eadicionales = Nothing

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_adicional_selXIdProyecto", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@idDscto", SqlDbType.Int).Value = pIdDscto
                cmd.Parameters.Add("@idProyecto", SqlDbType.Int).Value = idProyecto
                Try
                    cn.Open()
                    Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleRow Or CommandBehavior.CloseConnection)
                        If dr.HasRows Then
                            dr.Read()
                            adicional = New Eadicionales( _
                                dr.GetInt32(dr.GetOrdinal("idDscto")), _
                                dr.GetString(dr.GetOrdinal("descDscto")), _
                                dr.GetDecimal(dr.GetOrdinal("dsctoMin")), _
                                dr.GetDecimal(dr.GetOrdinal("dsctoMax")), _
                                dr.GetString(dr.GetOrdinal("estado")), _
                                dr.GetInt32(dr.GetOrdinal("idUsuario")), _
                                dr.GetInt32(dr.GetOrdinal("idProyecto")), _
                                dr.GetInt32(dr.GetOrdinal("idTpoadicional")))
                            dr.Close()
                        End If
                    End Using
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return adicional
    End Function



    Public Shared Function SeleccionarProyecto(ByVal descEmpresa As String) As List(Of Eproyecto)
        Dim proyectos As List(Of Eproyecto) = Nothing
        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_proyecto_simple_sel", cn)
                cmd.CommandType = CommandType.StoredProcedure
                Try
                    cn.Open()
                    Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleResult Or CommandBehavior.CloseConnection)
                        If dr.HasRows Then
                            proyectos = New List(Of Eproyecto)
                            Dim proyecto As Eproyecto = Nothing
                            Do While dr.Read()
                                proyecto = New Eproyecto( _
                                    dr.GetInt32(dr.GetOrdinal("idProyecto")), _
                                    dr.GetString(dr.GetOrdinal("descProyecto")))
                                proyectos.Add(proyecto)
                            Loop
                            dr.Close()
                        End If
                    End Using
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using
        Return proyectos
    End Function
    Public Shared Function SeleccionarTpoadicional(ByVal descEmpresa As String) As List(Of Eadicionales)
        Dim tpoadicionals As List(Of Eadicionales) = Nothing
        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_Tipoadicional_sel", cn)
                cmd.CommandType = CommandType.StoredProcedure
                Try
                    cn.Open()
                    Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleResult Or CommandBehavior.CloseConnection)
                        If dr.HasRows Then
                            tpoadicionals = New List(Of Eadicionales)
                            Dim tpoadicional As Eadicionales = Nothing
                            Do While dr.Read()
                                tpoadicional = New Eadicionales( _
                                    dr.GetInt32(dr.GetOrdinal("idAdicional")), _
                                    dr.GetString(dr.GetOrdinal("tituloAdicional")), _
                                    dr.GetString(dr.GetOrdinal("estado")))
                                tpoadicionals.Add(tpoadicional)
                            Loop
                            dr.Close()
                        End If
                    End Using
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using
        Return tpoadicionals
    End Function
    Public Shared Function Añadir(ByVal descEmpresa As String, ByVal adicional As Eadicionales) As Boolean
        Dim resultado As Boolean = False

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_adicionales_add", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@codAdicional", SqlDbType.VarChar, 5).Value = adicional.codAdicional
                cmd.Parameters.Add("@tituloAdicional", SqlDbType.VarChar, 55).Value = adicional.tituloAdicional
                cmd.Parameters.Add("@tipoAdicional", SqlDbType.VarChar, 1).Value = adicional.tipoAdicional
                cmd.Parameters.Add("@descAdicional", SqlDbType.VarChar, 300).Value = adicional.descAdicional
                cmd.Parameters.Add("@monto", SqlDbType.Decimal, 15, 2).Value = adicional.monto
                cmd.Parameters.Add("@idProyecto", SqlDbType.Int).Value = adicional.idProyecto
                cmd.Parameters.Add("@estado", SqlDbType.VarChar, 1).Value = adicional.estado
                cmd.Parameters.Add("@idUsuario", SqlDbType.Int).Value = adicional.idUsuario
                cmd.Parameters.Add("@tipoCasa", SqlDbType.VarChar, 1).Value = adicional.tipoCasa
                Try
                    cn.Open()
                    cmd.ExecuteNonQuery()
                    resultado = True
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return resultado
    End Function
    Public Shared Function Editar(ByVal descEmpresa As String, ByVal adicional As Eadicionales) As Boolean
        Dim resultado As Boolean = False

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_adicional_edit", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@idAdicional", SqlDbType.Int).Value = adicional.idAdicional
                cmd.Parameters.Add("@codAdicional", SqlDbType.VarChar, 5).Value = adicional.codAdicional
                cmd.Parameters.Add("@tituloAdicional", SqlDbType.VarChar, 55).Value = adicional.tituloAdicional
                cmd.Parameters.Add("@tipoAdicional", SqlDbType.VarChar, 1).Value = adicional.tipoAdicional
                cmd.Parameters.Add("@descAdicional", SqlDbType.VarChar, 300).Value = adicional.descAdicional
                cmd.Parameters.Add("@monto", SqlDbType.Decimal, 15, 2).Value = adicional.monto
                cmd.Parameters.Add("@idProyecto", SqlDbType.Int).Value = adicional.idProyecto
                cmd.Parameters.Add("@estado", SqlDbType.VarChar, 1).Value = adicional.estado
                cmd.Parameters.Add("@idUsuario", SqlDbType.Int).Value = adicional.idUsuario
                cmd.Parameters.Add("@tipoCasa", SqlDbType.VarChar, 1).Value = adicional.tipoCasa
                Try
                    cn.Open()
                    cmd.ExecuteNonQuery()
                    resultado = True
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return resultado
    End Function
    Public Shared Function Eliminar(ByVal descEmpresa As String, ByVal adicional As Eadicionales) As Boolean
        Dim resultado As Boolean = False

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_adicional_del", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@idAdicional", SqlDbType.Int).Value = adicional.idAdicional
                cmd.Parameters.Add("@idUsuario", SqlDbType.Int).Value = adicional.idUsuario
                Try
                    cn.Open()
                    cmd.ExecuteNonQuery()
                    resultado = True
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return resultado
    End Function

    Public Shared Function Buscar(ByVal descEmpresa As String, ByVal padicional As Eadicionales) As List(Of Eadicionales)
        Dim adicionals As List(Of Eadicionales) = Nothing

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_adicional_find", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@filtro", SqlDbType.VarChar, 55).Value = padicional.filtro
                Try
                    cn.Open()
                    Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleResult Or CommandBehavior.CloseConnection)
                        If dr.HasRows Then
                            adicionals = New List(Of Eadicionales)
                            Dim adicional As Eadicionales = Nothing
                            Do While dr.Read
                                adicional = New Eadicionales( _
                                    dr.GetInt32(dr.GetOrdinal("idDscto")), _
                                    dr.GetString(dr.GetOrdinal("descDscto")), _
                                    dr.GetDecimal(dr.GetOrdinal("dsctoMin")), _
                                    dr.GetDecimal(dr.GetOrdinal("dsctoMax")), _
                                    dr.GetString(dr.GetOrdinal("estado")), _
                                    dr.GetInt32(dr.GetOrdinal("idUsuario")), _
                                    dr.GetInt32(dr.GetOrdinal("idProyecto")), _
                                    dr.GetInt32(dr.GetOrdinal("idTpoadicional")))
                                adicionals.Add(adicional)
                            Loop
                            dr.Close()
                        End If
                    End Using
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using
        Return adicionals
    End Function

End Class
